package com.thn.netty.chat.primitive;

/**
 * 存储错误码.
 * @author LiuYueHong
 * 
 */
public enum ErroCode {
	
	//  考虑到linux错误码为200以下，windows错误码为1000以下， windows socket错误码为10000－11000
	// 服务器所有错误码控制在2000－9999
	// 自定义内存错误 2001－2500
	// 自定义进程线程错误 2501－3000
	// 自定义网络错误 3001－4000	
	ERR_PC_BUFFER_WRITE(3001),
	ERR_MOBILE_BUFFER_WRITE(3002),
	ERR_WEB_BUFFER_WRITE(3003),
	ERR_PC_MOBILE_BUFFER_WRITE(3004),
	ERR_PC_WEB_BUFFER_WRITE(3005),
	ERR_WEB_MOBILE_BUFFER_WRITE(3006),
	ERR_PC_WEB_MOBILE_BUFFER_WRITE(3007),
	
	// 自定义protobuf错误 4001－4500
	ERR_PARAM_PROTOCOL_MSG_TYPE_INVALID(4001),//protobuf msg type is invalid
	ERR_PARAM_PROTOCOL_MSG_SUB_TYPE_INVALID(4002),//protobuf msg sub type is invalid
	ERR_PROTOBUF_ENUM_INVALID(4003),// 参数不在枚举范围内
	
	// 自定义Json错误 4501－5000
	ERR_JSON_NONEXIST_OBJECT(4501),
	ERR_JSON_STR_EMPTY(4502),
	ERR_JSON_PARSE_ERROR(4503),
	
	// 自定义Redis错误 5001－5501
	ERR_REDIS_GET_INSTANCE_FAILED(5001),
	
	// 自定义Mysql错误 5501－6000
	
	// 参数错误 6001－7000	
	ERR_PARAM_UNKNOWN_LOGINTYPE(6001),//未知登录类型
	ERR_PARAM_NULL(6002),//参数指针为空
	ERR_PARAM_CANNOT_FIND_CONN(6003),
	
	// 其它错误 可继续分类
	ERR_CANNOT_GET_USERID_FROM_CONN(7001),//cannot get the userid from conn
	ERR_CANNOT_GET_CONN_FROM_USERID(7002),//cannot get the conn from userid
	ERR_IGNORE_MYCONN(7003) // 跳过自身
    ; 
	
    private final int mId;
    ErroCode(int aId) {
        mId = aId;
    }
    public int getValue() {
        return mId;
    }
    public static ErroCode forType(int aId) {
        for (ErroCode type : ErroCode.values()) {
            if (type.mId == aId) {
                return type;
            }
        }
        throw new IllegalArgumentException("bad ErroCode: " + aId);
    }
    @Override
    public String toString() {
        return super.toString() + "(" + mId + ")";
    }
}
